using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("MultiClassBannerTransition")]
	public class MultiClassBannerTransition : MonoBehaviour
	{
		[Attribute38("MultiClassBannerTransition.ClassMaterials")]
		public class ClassMaterials : MonoClass
		{
			public TAG_CLASS m_Class => method_2<TAG_CLASS>("m_Class");

			public Color m_BannerColor => method_2<Color>("m_BannerColor");

			public Color m_GlowColor => method_2<Color>("m_GlowColor");

			public Material m_EffectMaterial => method_3<Material>("m_EffectMaterial");

			public ClassMaterials(IntPtr address, string className)
				: base(address, className)
			{
			}

			public ClassMaterials(IntPtr address)
				: this(address, "ClassMaterials")
			{
			}
		}

		public List<TAG_CLASS> m_ClassList => method_3<Class270<TAG_CLASS>>("m_ClassList")?.method_25();

		public List<ClassMaterials> m_ClassMaterials => method_3<Class271<ClassMaterials>>("m_ClassMaterials")?.method_25();

		public GameObject m_BannerMesh => method_3<GameObject>("m_BannerMesh");

		public Material m_GoldenRibbonMaterial => method_3<Material>("m_GoldenRibbonMaterial");

		public float m_TransitionTime => method_2<float>("m_TransitionTime");

		public float m_HoldTime => method_2<float>("m_HoldTime");

		public float m_MoteDelayTime => method_2<float>("m_MoteDelayTime");

		public GameObject m_ParticleFXRoot => method_3<GameObject>("m_ParticleFXRoot");

		public GameObject m_Shadow => method_3<GameObject>("m_Shadow");

		public GameObject m_GoldenRibbonMesh => method_3<GameObject>("m_GoldenRibbonMesh");

		public List<Color> m_bannerColors => method_3<Class270<Color>>("m_bannerColors")?.method_25();

		public List<Color> m_glowColors => method_3<Class270<Color>>("m_glowColors")?.method_25();

		public List<Material> m_effectMaterials => method_3<Class271<Material>>("m_effectMaterials")?.method_25();

		public int m_currentClassNum => method_2<int>("m_currentClassNum");

		public float m_nextTransitionTime => method_2<float>("m_nextTransitionTime");

		public float m_transitionEndTime => method_2<float>("m_transitionEndTime");

		public int m_multiClassGroupID => method_2<int>("m_multiClassGroupID");

		public GameObject m_multiClassGroupIcon => method_3<GameObject>("m_multiClassGroupIcon");

		public Material m_bannerMaterial => method_3<Material>("m_bannerMaterial");

		public Material m_goldenRibbonMaterial => method_3<Material>("m_goldenRibbonMaterial");

		public float m_materialDissolve => method_2<float>("m_materialDissolve");

		public Renderer m_TransitionFXMat => method_3<Renderer>("m_TransitionFXMat");

		public Renderer m_subFXSparksMat => method_3<Renderer>("m_subFXSparksMat");

		public MultiClassBannerTransition(IntPtr address, string className)
			: base(address, className)
		{
		}

		public MultiClassBannerTransition(IntPtr address)
			: this(address, "MultiClassBannerTransition")
		{
		}

		public static int CompareClasses(TAG_CLASS classA, TAG_CLASS classB)
		{
			return MonoClass.smethod_14<int>(TritonHs.MainAssemblyPath, "", "MultiClassBannerTransition", "CompareClasses", new object[2] { classA, classB });
		}

		public ClassMaterials GetClassMaterials(TAG_CLASS cycleClass)
		{
			return method_14<ClassMaterials>("GetClassMaterials", new object[1] { cycleClass });
		}

		public void SetMultiClassGroup(int groupID)
		{
			method_8("SetMultiClassGroup", groupID);
		}

		public void UpdateClassList()
		{
			method_8("UpdateClassList");
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public void TransitionClass()
		{
			method_8("TransitionClass");
		}

		public void TransitionClassImmediately()
		{
			method_8("TransitionClassImmediately");
		}

		public void Update()
		{
			method_8("Update");
		}

		public void SetGoldenCardMesh(GameObject mesh, int matIdx)
		{
			method_8("SetGoldenCardMesh", mesh, matIdx);
		}

		public void TurnOffShadowsAndFX()
		{
			method_8("TurnOffShadowsAndFX");
		}

		public void PlayParticles()
		{
			method_8("PlayParticles");
		}

		public void UpdateParticleScale()
		{
			method_8("UpdateParticleScale");
		}

		public void UpdateMaterials()
		{
			method_8("UpdateMaterials");
		}

		public int GetNextClassNum()
		{
			return method_11<int>("GetNextClassNum", Array.Empty<object>());
		}
	}
}
